跳到主要内容

BM17 二分查找-I

https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b

虽然二分是最简单的算法之一,但是很久不写还是有很多点会忘记

func search( nums []int ,  target int ) int {
left, right := 0, len(nums) - 1
for left <= right {
mid := (right - left) / 2 + left
if nums[mid] == target {
return mid
} else if nums[mid] > target {
right = mid - 1
} else {
left = mid + 1
}
}
return -1
}

这里的 mid 应该使用

mid := (right - left) / 2 + left

这样可以避免算出负数

然后就是要加一或者减一,否则会陷入死循环

23/5/10

用时 13分钟